package com.im.service.folderManage.smo;

import java.util.List;
import java.util.Map;

import com.im.service.dto.BusiConstParamVal;
import com.im.service.dto.DocInfo;
import com.im.service.dto.FileBorrow;
import com.im.service.dto.FileUpload;
import com.im.service.dto.ImplementProject;
import com.im.service.dto.PageQuery;
import com.im.service.dto.ProjectStage;
import com.im.service.dto.StageNode;
import com.im.viewmodel.folderManage.FolderInfoManageRespVo;

import net.sf.json.JSONArray;

public interface IFolderManageQuerySMO {
	
	/**
	 * 查询实施项目设置的所需经历的阶段信息
	 * @param projStage
	 * @return
	 */
	List<ProjectStage> queryImpleProjStageList(Map<String, Object> param);
	/**
	 * 查询项目阶段节点信息
	 * @param StageNode
	 * @return
	 */
	List<StageNode> queryStageNodeList(Map<String, Object> param);
	/**
	 * 查询项目阶段节点信息
	 * @param FileUpload
	 * @return
	 */
	public FileUpload queryFileUploadInfo(Map<String, Object> param);
	/**
	 * 查询项目阶段节点信息
	 * @param DocInfo
	 * @return
	 */
	public DocInfo queryDocInfoInfo(Map<String, Object> param);
	/**
	 * 查询项目阶段节点信息详情
	 * @param FileUpload
	 * @return
	 */
	public FileUpload queryFileUploadInfoDetail(Map<String, Object> param);
	/**
	 * 查询项目阶段节点信息详情
	 * @param DocInfo
	 * @return
	 */
	public DocInfo queryDocInfoInfoDetail(Map<String, Object> param);
	/**
	 * 查询项目阶段子节点信息
	 * @param StageNode
	 * @return
	 */
	List<StageNode> queryStageChildNodeList(Map<String, Object> param);
	/**
	 * 根据阶段id查询实施项目设置的所需经历的阶段信息
	 * @param projStage
	 * @return
	 */
	public ProjectStage queryImpleProjStageByProjStageId(Map<String, Object> param);
	/**
	 * 查询节点文件借阅信息详情
	 * @param FileBorrow
	 * @return
	 */
	public FileBorrow queryFileBorrowInfoDetail(Map<String, Object> param);
	
	/**
	 * 查询项目阶段文档信息列表
	 * @param DocInfo
	 * @return
	 */
	public List<DocInfo> queryDocInfoByProjStageId(Map<String, Object> param);
	
	public int selectDocInfoByParamCount(Map<String, Object> param);
	
	public int selectUploadFileByParamCount(Map<String, Object> param);
	
	public PageQuery<FolderInfoManageRespVo> queryProjectStageDocInfo(String inJson);
	
	public JSONArray queryDocInfoByProjStageId(String inJson);
	
	public String queryFileInfoDetail(String inJson);
	public PageQuery<ImplementProject> queryImpleProjListForDocInfo(String inJson);
	
	/**
	 * 查询项目阶段
	 * @param DocInfo
	 * @return
	 */
	public List<BusiConstParamVal> queryProjectStageForDocInfo(String inJson);
}
